/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package issr.controller;

import issr.entity.Puntovendita;
import issr.entity.Utente;
import issr.persistence.Database;
import java.util.ArrayList;
import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.ejb.Stateless;

/**
 *
 * @author Soulreaver
 */
@WebService(serviceName = "ControlloreAssegnazioneDipendente")
@Stateless()
public class ControlloreAssegnazioneDipendente {

    private Database db = Database.getInstance();

    /**
     * Web service operation
     */
    @WebMethod(operationName = "ottieniListaDipendenti")
    public ArrayList<Utente> ottieniListaDipendenti() {
        return db.caricaDipendentiOrganizzazione();
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "ottieniListaPuntiVendita")
    public ArrayList<Puntovendita> ottieniListaPuntiVendita() {
        return db.caricaPuntiVendita();
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "assegnaDipendente")
    public boolean assegnaDipendente(@WebParam(name = "utente") Utente utente, @WebParam(name = "corrente") Utente corrente, @WebParam(name = "puntovendita") Puntovendita puntovendita) {
        try {
            if (puntovendita != null && utente.getRuolo().getNome().equals("GestorePV")) {
                Utente vecchioTitolare = db.caricaTitolare(puntovendita);
                vecchioTitolare.setPuntovendita(null);
                db.assegnaDipendente(vecchioTitolare);
                db.aggiungiEntry(
                        corrente,
                        puntovendita,
                        "GestorePV " + vecchioTitolare + " non piu assegnato a " + puntovendita.getNome());
            }
            utente.setPuntovendita(puntovendita);
            db.assegnaDipendente(utente);
            db.aggiungiEntry(
                    corrente,
                    puntovendita,
                    "Modifica assegnazione dipendente: " + utente);
            return true;

        } catch (Exception e) {
            return false;
        }
    }
}
